package com.mybatis.mybatisdatab.controller;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Controller;

import org.springframework.util.ClassUtils;

import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.*;

@Controller

public class PageController {

    private static ClassLoader classLoader = ClassUtils.getDefaultClassLoader();

    private static final Logger log = LoggerFactory.getLogger(PageController.class);

    @RequestMapping("/")

    public void root(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.getRequestDispatcher("/templates/index.html").forward(request, response);

    }

    @RequestMapping("**.html")

    public void page(HttpServletRequest request, HttpServletResponse response) throws IOException {

        InputStreamReader streamReader = null;

        try {

            String servletPath = request.getServletPath();

            log.info(request.getMethod() + " " + servletPath);

            String filePath = "templates" + servletPath;

            InputStream inputStream = classLoader.getResourceAsStream(filePath);

            if (inputStream == null) {

                response.sendError(404);

                return;

            }

            streamReader = new InputStreamReader(inputStream);

            PrintWriter printWriter = response.getWriter();

            response.setContentType("text/html");

            int readChar;

            while ((readChar = streamReader.read()) != -1) {

                printWriter.write(readChar);

            }

            printWriter.flush();

        } finally {

            if (streamReader != null) streamReader.close();

        }

    }

}
